package com.hunttown.mes.common.utils;

/**
 * @title: SQL注入过滤
 * @author: wangjunfu
 * @date: 2021年08月26日 10:11
 * @description:
 */
public class SQLFilterUtils {

    /**
     * 校验是否存在SQL注入情况
     *
     * @param str 校验字符串
     * @return true存在 false不存在
     */
    public static boolean sqlValidate(String str) {

        //非空判断
        if (StringUtils.isBlank(str)) {
            return false;
        }

        //统一转为小写
        str = str.toLowerCase();

        //过滤掉的sql关键字，可以手动添加
        //String badStr = "select|update|and|or|delete|insert|create|truncate|like|from|char|substr|ascii|declare|" +
        //        "exec|count|master|into|drop|execute|table|chr|mid|sitename|net user|xp_cmdshell|grant|use|" +
        //        "group_concat|column_name|information_schema.columns|table_schema|union|where|" +
        //        "order|by|;|-|+|,|'|*|%|--|//|/|%|#";

        //上面过滤的太过详细
        String badStr = "select|update|and|or|delete|insert|create|truncate|like|from|char|into|substr|ascii|declare|exec|count|master|into|drop|execute|table";

        String[] badStrs = badStr.split("\\|");
        for (String s : badStrs) {
            if (str.contains(s)) {
                return true;
            }
        }
        return false;
    }

}
